{
  "components": {
    "examples": {},
    "headers": {},
    "parameters": {},
    "requestBodies": {},
    "responses": {},
    "schemas": {
      "GetProfileBioDTO": {
        "type": "object",
        "properties": {
          "candidateId": {
            "type": "integer",
            "format": "int32"
          },
          "cityName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AuthUser": {
        "properties": {
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": ["username", "password"],
        "type": "object",
        "additionalProperties": false
      },
      "Kind": {
        "enum": ["COMPANY", "PERSONAL", "FREELANCE", "OPEN_SOURCE"],
        "type": "string"
      },
      "Job": {
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/Kind"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          },
          "github": {
            "type": "string",
            "nullable": true
          },
          "npm": {
            "type": "string",
            "nullable": true
          },
          "isTool": {
            "type": "boolean",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          }
        },
        "required": ["id", "kind"],
        "type": "object",
        "additionalProperties": false
      },
      "Pick_Job.%22github%22_": {
        "properties": {
          "github": {
            "type": "string"
          }
        },
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "UpdatedJob": {
        "$ref": "#/components/schemas/Job"
      },
      "Pick_Job.Exclude_keyofJob.%22id%22__": {
        "properties": {
          "address": {
            "type": "string"
          },
          "isTool": {
            "type": "boolean"
          },
          "npm": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/Kind"
          },
          "github": {
            "type": "string"
          }
        },
        "required": ["kind"],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "Omit_Job.%22id%22_": {
        "$ref": "#/components/schemas/Pick_Job.Exclude_keyofJob.%22id%22__"
      },
      "JobUpdate": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Omit_Job.%22id%22_"
          },
          {
            "$ref": "#/components/schemas/Pick_Job.%22github%22_"
          },
          {
            "additionalProperties": true,
            "type": "object"
          }
        ]
      },
      "Project": {
        "properties": {
          "id": {
            "type": "string"
          },
          "year": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string"
          },
          "job": {
            "$ref": "#/components/schemas/Job"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "notImportant": {
            "type": "boolean",
            "nullable": true
          },
          "prefix": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "teamSize": {
            "type": "string"
          }
        },
        "required": ["id", "year", "description", "job", "tags", "teamSize"],
        "type": "object",
        "additionalProperties": false
      },
      "Pick_Project.Exclude_keyofProject.%22id%22~OR~%22job%22__": {
        "properties": {
          "teamSize": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "prefix": {
            "type": "string"
          },
          "notImportant": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "year": {
            "type": "number",
            "format": "double"
          },
          "name": {
            "type": "string"
          }
        },
        "required": ["year", "description", "tags", "teamSize"],
        "type": "object",
        "description": "From T, pick a set of properties whose keys are in the union K"
      },
      "ProjectUpdate": {
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "year": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string"
          },
          "notImportant": {
            "type": "boolean",
            "nullable": true
          },
          "prefix": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "teamSize": {
            "type": "string"
          },
          "job": {
            "type": "string"
          }
        },
        "required": ["year", "description", "tags", "teamSize", "job"],
        "type": "object",
        "additionalProperties": false
      },
      "UpdatedProject": {
        "properties": {
          "id": {
            "type": "string"
          },
          "year": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "notImportant": {
            "type": "boolean",
            "nullable": true
          },
          "prefix": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "teamSize": {
            "type": "string"
          },
          "job": {
            "type": "string"
          }
        },
        "required": ["id", "year", "description", "tags", "teamSize", "job"],
        "type": "object",
        "additionalProperties": false
      },
      "User": {
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": ["id", "username"],
        "type": "object",
        "additionalProperties": false
      },
      "UserUpdate": {
        "properties": {
          "username": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          }
        },
        "type": "object",
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "JWT": {
        "description": "",
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "info": {
    "title": ""
  },
  "openapi": "3.0.0",
  "paths": {
    "/auth": {
      "post": {
        "operationId": "Login",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Authorize and returns jwt token"
          }
        },
        "tags": ["Auth"],
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthUser"
              }
            }
          }
        }
      }
    },
    "/auth/refresh": {
      "post": {
        "operationId": "Refresh",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "utilized current token and returns new token"
          }
        },
        "tags": ["Auth"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/jobs": {
      "x-method": {},
      "get": {
        "operationId": "GetJobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Job"
                  },
                  "type": "array"
                }
              }
            },
            "description": "jobs found"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": []
      },
      "post": {
        "operationId": "AddJob",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pick_Job.%22github%22_"
              }
            }
          }
        }
      }
    },
    "x-route": {
      "get": {
        "operationId": "GetJobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Job"
                  },
                  "type": "array"
                }
              }
            },
            "description": "jobs found"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": []
      },
      "post": {
        "operationId": "AddJob",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pick_Job.%22github%22_"
              }
            }
          }
        }
      }
    },
    "/jobs/{id}": {
      "get": {
        "operationId": "GetJob",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            },
            "description": "job found"
          },
          "404": {
            "content": {
              "application/json": {}
            },
            "description": "job not found"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "patch": {
        "operationId": "UpdateJob",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedJob"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdate"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteJob",
        "responses": {
          "204": {
            "content": {
              "application/json": {}
            },
            "description": "No content"
          }
        },
        "tags": ["Jobs"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/projects": {
      "get": {
        "operationId": "GetProjects",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Project"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Projects"],
        "security": [],
        "parameters": []
      },
      "post": {
        "operationId": "AddProjects",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Projects"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectUpdate"
              }
            }
          }
        }
      }
    },
    "/projects/{id}": {
      "patch": {
        "operationId": "UpdateProject",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedProject"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Projects"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectUpdate"
              }
            }
          }
        }
      }
    },
    "/users": {
      "get": {
        "operationId": "GetUsers",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/User"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Users"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": []
      },
      "post": {
        "operationId": "AddUser",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Users"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthUser"
              }
            }
          }
        }
      }
    },
    "/users/{id}": {
      "delete": {
        "operationId": "DeleteUser",
        "responses": {
          "204": {
            "content": {
              "application/json": {}
            },
            "description": "No content"
          }
        },
        "tags": ["Users"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "patch": {
        "operationId": "UpdateUser",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "Ok"
          }
        },
        "tags": ["Users"],
        "security": [
          {
            "jwt": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdate"
              }
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "http://localhost:8080/api/v1"
    }
  ]
}
